import imageType, { type ImageType } from 'image-type';
import isSvg from 'is-svg';
import { imageTypes } from '@e/utils/imageType';

// 图片类型放回结果
export type ImageTypeResult = { ext: ImageType | 'svg'; mime: string };

/**
 * 获取图片类型
 */
export function getImageType(buffer: Buffer) {
	const result = imageType(buffer) as ImageTypeResult;

	if (result) {
		return result;
	} else {
		if (isSvg(buffer.toString())) {
			return { ext: 'svg', mime: 'image/svg+xml' } as ImageTypeResult;
		}
	}
}

/**
 * 根据扩展名判断是否为图片
 */
export function isImageByExt(ext?: string) {
	if (ext) {
		return imageTypes.includes(ext as ImageType);
	}
	return false;
}

/**
 * 根据文件名判断是否为图片
 */
export function isImageByFilename(name?: string) {
	if (name) {
		const matchs = name.match(/\.([a-zA-Z]+)$/);

		if (matchs && matchs[1]) {
			return isImageByExt(matchs[1]);
		}
	}

	return false;
}
